package com.ellwood.IPGuard.infrastruction.repository.system;

import com.ellwood.IPGuard.common.core.basic.EntityRepository;
import com.ellwood.IPGuard.infrastruction.domain.entity.system.UmsSysUserEntity;

import java.util.List;
import java.util.Map;

/**
 * @ProjectName: IPGuard-boot
 * @PackageName: com.ellwood.IPGuard.infrastruction.repository.system
 * @ClassName: UmsSysUserRepository
 * @Description: // 用户实体仓库接口
 * @Author: Ellwood
 * @CreateDate: 2024/9/25 - 下午4:49
 * @Version: V1.0.0
 */
public interface UmsSysUserRepository extends EntityRepository<UmsSysUserEntity> {
        
        
        // 分页查询
        List<UmsSysUserEntity> getUserList(Map<String, Object> pageParams);
        
        /**
         * 查询用户账号
         *
         * @param username 账号
         * @return 返回账号数据
         */
        UmsSysUserEntity getUserByUsername(String username);
        
        /**
         * 查询手机号
         *
         * @param phone 手机号
         * @return 返回用户数据
         */
        UmsSysUserEntity getUserByMobile(String phone);
        
        /**
         * 新增用户
         *
         * @param userEntity 用户数据
         * @return 返回新增结果 0：失败；1：成功
         */
        int insert(UmsSysUserEntity userEntity);
        
        /**
         * 更新用户
         *
         * @param userEntity 用户数据
         * @return 返回更新结果 0：失败；1：成功
         */
        int updateUser(UmsSysUserEntity userEntity);
        
        /**
         * 删除用户
         *
         * @param idList 用户id集合
         * @return 返回删除结果 0：失败；1：成功
         */
        int userRemove(List<Long> idList);
        
        /**
         * 逻辑删除用户
         *
         * @param userId 用户id
         * @return 返回删除结果 0：失败；1：成功
         */
        int userLogicRemove(Long userId);
        
        /**
         * Excel 批量插入用户数据
         * @param userList 用户列表数据
         * @return 返回插入成功
         */
        void insertBatch(List<UmsSysUserEntity> userList);
        
        /**
         * 导出用户数据
         * @return
         */
        List<UmsSysUserEntity> getExportUserList();
}
